package beans;


import DAO.Factory;
import beans.util.PageBean;
import org.apache.log4j.Logger;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.Serializable;

/**
 * Created by Волков Олег on 28.04.14.
 */
public class UserAutorisationBean extends PageBean implements Serializable {

    private Boolean isLogin = false;

    private String login = "";

    private String password = "";

    private static final Logger logger = Logger.getLogger(UserAutorisationBean.class);

    /**
     * Авторизация пользователя.
     * Проверка существования пользователя осуществляется методом checkUser()
     * для проверки наличия данных пользователя в базе данных.
     * DbIteraction.checkUser(login, password)
     *
     * @throws IOException
     */
    public void autorisation() throws IOException {
        if (!Factory.getInstance().getUserDAO().checkUser(login,password)) {
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse httpResponse = (HttpServletResponse) context.getExternalContext().getResponse();
            httpResponse.sendRedirect("error");
            FacesContext.getCurrentInstance().responseComplete();
        } else {
            this.isLogin=true;
            logger.info("logon complete");
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse httpResponse = (HttpServletResponse) context.getExternalContext().getResponse();
            httpResponse.sendRedirect("safe/hello");
            FacesContext.getCurrentInstance().responseComplete();


        }
    }

    public String logout(){
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        session.invalidate();
        return "/login";
    }


    // Гетеры и сетеры
    public void setLogin(String login) {
        this.login = login;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getLogin() {
        return login;
    }

    public String getPassword() {
        return password;
    }

    public Boolean getIsLogin() {
        return isLogin;
    }

    public void setIsLogin(Boolean isLogin) {
        this.isLogin = isLogin;
    }
}

